package biolabs.core;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Marks a method that returns an interaction delegate.
 * A delegate is an object designated by a bio-object to act
 * on its behalf in an interaction. A delegate encapsulates
 * bio-object's data needed for a particular interaction.
 * Each interaction type requires a particular type of
 * interaction delegate.
 *
 * @author Tomas Mikula
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Delegate {
	Class<?>[] action();
	String[] typeParamRefs() default {};
}
